package base_project.base;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import net.xdclass.base_project.FastjsonApplication;
import net.xdclass.base_project.domain.Student;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.*;

/**
 * @author sqz
 * @Description:
 * JSONObject，JSONArray是JSON的两个子类。
 * JSONObject是继承Map<String, Object>，并且都是使用的Map中的方法。可以说JSONObject相当于Map<String, Object>
 * JSONArray是继承List<Object>，并且都是使用的List中的方法。可以说JSONArray相当于List<Object>
 * @date 2019/3/20 11:05
 */
@RunWith(SpringRunner.class)  //底层用junit  SpringJUnit4ClassRunner
@SpringBootTest(classes={FastjsonApplication.class})//启动整个springboot工程
public class JsonObjectAndJsonArray {
    /**
     * 将Map转成JSONObject，然后添加元素，输出
     */
    @Test
    public void testJsonObject() {
        Map<String, Object> testMap = new HashMap<>();
        testMap.put("key1", "value1");
        testMap.put("key2", "value2");

        JSONObject jsonObj = new JSONObject(testMap);
        jsonObj.put("key3", "value3");
        System.out.println(jsonObj);//{"key1":"value1","key2":"value2","key3":"value3"}
        System.out.println(jsonObj.get("key2"));//value2

    }

    /**
     * 将List对象转成JSONArray，然后输出
     */
    @Test
    public void testJsonArray() {
        List<Object> list = new ArrayList<>();
        list.add("home");
        list.add(60);
        list.add(true);
        list.add(new Date());
        list.add(new Student(1, "zhanghsan", 20));

        JSONArray jsonArr = JSONArray.parseArray(JSON.toJSONString(list));
        System.out.println(jsonArr);//["home",60,true,1553051376755,{"name":"zhanghsan","id":1,"age":20}]
    }
}
